package matrixTest;

import static org.junit.Assert.*;
import matrix.CMatrixAsArray;
import matrix.CSimpleCell;
import matrix.CSimpleCellFactory;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class CMatrixAsArrayTest {
private static CMatrixAsArray m_oMatrix;
private static CSimpleCellFactory m_oCellFactory;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		m_oMatrix = new CMatrixAsArray(3, 3);
		m_oCellFactory = new CSimpleCellFactory();
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public final void testAdd01() {
		m_oMatrix.add(m_oCellFactory.createCell(m_oMatrix, 0, 1));
	}

	@Test
	public final void testAdd10() {
		m_oMatrix.add(m_oCellFactory.createCell(m_oMatrix, 1, 0));
	}

	@Test
	public final void testAdd41() {
		m_oMatrix.add(m_oCellFactory.createCell(m_oMatrix, 4, 1));
	}

	@Test
	public final void testAdd14() {
		m_oMatrix.add(m_oCellFactory.createCell(m_oMatrix, 1, 4));
	}

	@Test
	public final void testRange0122() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(0, 1, 2, 2);
	}

	@Test
	public final void testRange1022() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(1, 0, 2, 2);
	}

	@Test
	public final void testRange2241() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(2, 2, 4, 1);
	}

	@Test
	public final void testRange2214() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(2, 2, 1, 4);
	}

	@Test
	public final void testSubRange() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(1, 1, 1, 1);
	}

	@Test
	public final void testCMatrixAsArrayIntInt() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public final void testCMatrixAsArrayIRangeIntIntIntInt() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public final void testIterator() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public final void testRowInt() {
		fail("Not yet implemented"); // TODO
	}

	@Test
	public final void testColumnInt() {
		fail("Not yet implemented"); // TODO
	}

	/**
	 * Проверяем следующее:
	 * <li>Создание подобласти размером в одну ячейку (1,1,1,1)
	 * <li>Выборку ячейки с координатами 1,1
	 * <p>Проверка проходит, если результат обоих вызовов ссылается на один и тот же объект ICell(CSimpleCell)
	 */
	@Test
	public final void testCell() {
		CMatrixAsArray aMatrix = (CMatrixAsArray)m_oMatrix.range(1, 1, 1, 1);
		CSimpleCell aCell = (CSimpleCell)m_oMatrix.cell(1, 1);
	}

}
